package com.armed.ejb.entities;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Class Sesiones
 *
 *
 * @author init() software
 * @version 08/02/2008 
 */
@Entity
@Table(name = "SESIONES")
@NamedQueries({@NamedQuery(name = "Sesiones.findByFechaHoraInicio", query = "SELECT s FROM Sesiones s WHERE s.sesionesPK.fechaHoraInicio = :fechaHoraInicio"), @NamedQuery(name = "Sesiones.findByFechaHoraFin", query = "SELECT s FROM Sesiones s WHERE s.fechaHoraFin = :fechaHoraFin"), @NamedQuery(name = "Sesiones.findByUsuario", query = "SELECT s FROM Sesiones s WHERE s.sesionesPK.usuario = :usuario")})
public class Sesiones implements Serializable 
{
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected SesionesPK sesionesPK;
    @Column(name = "FECHA_HORA_FIN")
    @Temporal(TemporalType.DATE)
    private Date fechaHoraFin;
    @OneToMany(mappedBy = "sesiones",cascade={CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH})
    private Collection<DetallesDeVenta> detallesDeVentaCollection;
    /** Constructor of Sesiones */
    public Sesiones()
    {
    }

    public Sesiones(SesionesPK sesionesPK)
    {
        this.sesionesPK = sesionesPK;
    }

    public Sesiones(Date fechaHoraInicio, String usuario)
    {
        this.sesionesPK = new SesionesPK(fechaHoraInicio, usuario);
    }

    public SesionesPK getSesionesPK()
    {
        return sesionesPK;
    }

    public void setSesionesPK(SesionesPK sesionesPK)
    {
        this.sesionesPK = sesionesPK;
    }

    public Date getFechaHoraFin()
    {
        return fechaHoraFin;
    }

    public void setFechaHoraFin(Date fechaHoraFin)
    {
        this.fechaHoraFin = fechaHoraFin;
    }

    public Collection<DetallesDeVenta> getDetallesDeVentaCollection()
    {
        return detallesDeVentaCollection;
    }

    public void setDetallesDeVentaCollection(Collection<DetallesDeVenta> detallesDeVentaCollection)
    {
        this.detallesDeVentaCollection = detallesDeVentaCollection;
    }

    @Override
    public int hashCode()
    {
        int hash = 0;
        hash += (sesionesPK != null ? sesionesPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object)
    {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Sesiones))
        {
            return false;
        }
        Sesiones other = (Sesiones) object;
        if ((this.sesionesPK == null && other.sesionesPK != null) || (this.sesionesPK != null && !this.sesionesPK.equals(other.sesionesPK)))
        {
            return false;
        }
        return true;
    }

    @Override
    public String toString()
    {
        return "com.armed.ejb.entities.Sesiones[sesionesPK=" + sesionesPK + "]";
    }
}
